//导入router
import router from '@/router/index.js'
import store from './store'

//定义路由白名单 白名单就是没有token也能进入的页面
const whiteList = ['/login']

/**
 * 路由前置守卫
 * @param {*} to 要跳转哪个路由
 * @param {*} from 从哪个路由过来
 * @param {*} next 是否要跳转
 */
router.beforeEach(async (to, from, next) => {
  //1. 用户已登录,则不允许进入login页面
  console.log(store.getters.token);
  if (store.getters.token) {
    //如果用户访问的路由路径未login
    if (to.path === '/login') {
      //就跳转到/路由界面
      next('/')
    } else {
      //判断用户资料是否存在 如果不存在则获取用户信息 调用vuex中的getters方法
      if(!store.getters.hasUserInfo){
        //如果用户信息不会真代表没有用户信息 那么就调用actios中的getUserInfo方法发送请求
        await store.dispatch('user/getUserInfo') 
      }
      next()
    }
    //2. 用户未登录,则只允许进入 login页面 
  } else {
    //判断当前跳转的路由是包含在我们的whiteList中 不等于-1说明在 那就可以正常访问
    if (whiteList.indexOf(to.path) !== -1){
      next()
    } else {
      //反之打回登录界面
      next('/login')
    }
  }
})
